Para el siguien trabajo, se está utilizando datos de diferentes especies de orquideas muestreadas a lo largo y ancho del paÃs, el fin de la actividad recae en realizar un mapa interactivo donde se refleje estas en las áreas silvestres protegidas. Para lograr el cometido anterior, de limpiaron los datos a manera que la incertidumbre a la hora de levantameinto de datos no fuera tan elevada, ademas no se consideró datos sin nombre en su especie y asà mismo, tampoco se tomó en cuenta las áreas silvestres protegidas marÃtimas.
##Carga de librerias
library(sf)
library(raster)
library(dplyr)
library(rmapshaper)
library(leaflet)
library(leaflet.extras)
##Conjunto de datos a utilizar
Porquideas <- st_read("https://raw.githubusercontent.com/gf0604-procesamientodatosgeograficos/2021i-datos/main/gbif/orchidaceae-cr-registros.csv",
options = c( "X_POSSIBLE_NAMES=decimalLongitude",
"Y_POSSIBLE_NAMES=decimalLatitude"
)
,quiet = TRUE)
st_crs(Porquideas) = 4326
ASprotegidas <- st_read("https://raw.githubusercontent.com/gf0604-procesamientodatosgeograficos/2021i-datos/main/sinac/asp/asp-wgs84.geojson",
quiet = TRUE)
st_crs(ASprotegidas) = 4326
#Visualizacion de datos de Porquideas sin modificación
sapply(Porquideas, mode)
## gbifID datasetKey
## "character" "character"
## occurrenceID kingdom
## "character" "character"
## phylum class
## "character" "character"
## order family
## "character" "character"
## genus species
## "character" "character"
## infraspecificEpithet taxonRank
## "character" "character"
## scientificName verbatimScientificName
## "character" "character"
## verbatimScientificNameAuthorship countryCode
## "character" "character"
## locality stateProvince
## "character" "character"
## occurrenceStatus individualCount
## "character" "character"
## publishingOrgKey decimalLatitude
## "character" "numeric"
## decimalLongitude coordinateUncertaintyInMeters
## "numeric" "character"
## coordinatePrecision elevation
## "character" "character"
## elevationAccuracy depth
## "character" "character"
## depthAccuracy eventDate
## "character" "character"
## day month
## "character" "character"
## year taxonKey
## "character" "character"
## speciesKey basisOfRecord
## "character" "character"
## institutionCode collectionCode
## "character" "character"
## catalogNumber recordNumber
## "character" "character"
## identifiedBy dateIdentified
## "character" "character"
## license rightsHolder
## "character" "character"
## recordedBy typeStatus
## "character" "character"
## establishmentMeans lastInterpreted
## "character" "character"
## mediaType issue
## "character" "character"
## geometry
## "list"
#Agregar valor de O a NA en coordinateUncertaintyInMeters
Porquideas$coordinateUncertaintyInMeters[Porquideas$coordinateUncertaintyInMeters == ""] <- "0"
Porquideas <-
Porquideas %>%
mutate(coordinateUncertaintyInMeters = as.numeric(coordinateUncertaintyInMeters)) %>%
mutate(eventDate = as.Date(eventDate, "%Y-%m-%d"))
#Visualización de datos de orquÃdeas con modificación
sapply(Porquideas, mode)
## gbifID datasetKey
## "character" "character"
## occurrenceID kingdom
## "character" "character"
## phylum class
## "character" "character"
## order family
## "character" "character"
## genus species
## "character" "character"
## infraspecificEpithet taxonRank
## "character" "character"
## scientificName verbatimScientificName
## "character" "character"
## verbatimScientificNameAuthorship countryCode
## "character" "character"
## locality stateProvince
## "character" "character"
## occurrenceStatus individualCount
## "character" "character"
## publishingOrgKey decimalLatitude
## "character" "numeric"
## decimalLongitude coordinateUncertaintyInMeters
## "numeric" "numeric"
## coordinatePrecision elevation
## "character" "character"
## elevationAccuracy depth
## "character" "character"
## depthAccuracy eventDate
## "character" "numeric"
## day month
## "character" "character"
## year taxonKey
## "character" "character"
## speciesKey basisOfRecord
## "character" "character"
## institutionCode collectionCode
## "character" "character"
## catalogNumber recordNumber
## "character" "character"
## identifiedBy dateIdentified
## "character" "character"
## license rightsHolder
## "character" "character"
## recordedBy typeStatus
## "character" "character"
## establishmentMeans lastInterpreted
## "character" "character"
## mediaType issue
## "character" "character"
## geometry
## "list"
#Delimitación de los registros de presencia a valores menores de 100 en la insertidumbre a la hora de toma de los datos
Porquideas <-
Porquideas %>%
filter(!is.na(coordinateUncertaintyInMeters) & coordinateUncertaintyInMeters <= 1000)
#Eliminación de filas donde estén presentes NA's en la columna de especies
Porquideas <- Porquideas %>%
filter(!is.na(species) & species != "")
#Eliminación de filas par las areas silvestres protegidas donde la descripción del dato fuera en area marina
ASprotegidas <- ASprotegidas %>%
filter(descripcio != "Area Marina de Manejo") %>%
filter(descripcio != "Area marina protegida")
RPAS <- st_intersection(Porquideas, ASprotegidas)
## Warning: attribute variables are assumed to be spatially constant throughout all
## geometries
ASp_especies <-
ASprotegidas %>%
st_join(Porquideas) %>%
group_by(nombre_asp) %>%
summarize(especies = n_distinct(species, na.rm = TRUE)) %>%
rename(Areasconservacion = nombre_asp)
Para finalizar, se realizó un mapa mostrando los resultados obtenidos de la manipulación y limpieza realizada anteriormente.
#Generación del mapa
# Paleta de colores
colores_especies <-
colorNumeric(palette = "PuRd",
domain = ASp_especies$especies,
na.color = "transparent")
leaflet() %>%
addTiles(group = "OSM") %>%
addProviderTiles(providers$CartoDB.DarkMatter, group = "CartoDB.DarkMatter") %>%
addPolygons(
data = ASprotegidas,
fillColor = ~ colores_especies(ASp_especies$especies),
stroke = TRUE,
color = "white",
fillOpacity = 0.8,
weight = 1,
popup = paste(
paste(
"<strong>Area de conservación:</strong>",
ASp_especies$Areasconservacion
),
paste(
"<strong>Cantidad de especies:</strong>",
ASp_especies$especies
),
sep = '<br/>'
),
group = "Areas silvestres protegidas") %>%
addCircleMarkers(
data = RPAS,
stroke = F,
radius = 2,
fillColor = "#f44611",
fillOpacity = 1,
popup = paste(
RPAS$species,
RPAS$stateProvince,
RPAS$eventDate,
sep = '<br/>'
),
group = "Registros de orquideas"
) %>%
addLayersControl(baseGroups = c("CartoDB.DarkMatter","OSM"),
overlayGroups = c("Registros de orquideas", "Areas silvestres protegidas")) %>%
addLegend(
position = "bottomleft",
pal = colores_especies,
values = ASp_especies$especies,
group = "Areas silvestres protegidas",
title = "Cantidad de especies"
)